package com.linb.pan.server.modules.share.service;

import com.linb.pan.server.modules.file.vo.BPanUserFileVO;
import com.linb.pan.server.modules.share.context.*;
import com.linb.pan.server.modules.share.entity.BPanShare;
import com.baomidou.mybatisplus.extension.service.IService;
import com.linb.pan.server.modules.share.vo.BPanShareUrlListVO;
import com.linb.pan.server.modules.share.vo.BPanShareUrlVO;
import com.linb.pan.server.modules.share.vo.ShareDetailVO;
import com.linb.pan.server.modules.share.vo.ShareSimpleDetailVO;

import java.util.List;


public interface IShareService extends IService<BPanShare> {

    /**
     * 创建分享链接
     */
    BPanShareUrlVO create(CreateShareUrlContext context);

    /**
     * 查看我的分享列表
     */
    List<BPanShareUrlListVO> getShares(QueryShareListContext context);

    /**
     * 取消分享
     */
    void cancelShare(CancelShareContext context);

    /**
     * 用于测试--查看所有人的分享列表
     */
    List<BPanShareUrlListVO> allShares();

    /**
     * 校验分享码
     */
    String checkShareCode(CheckShareCodeContext context);

    /**
     * 查询分享的详情
     */
    ShareDetailVO detail(QueryShareDetailContext context);

    /**
     * 查询简单分享详情
     */
    ShareSimpleDetailVO simpleDetail(QueryShareSimpleDetailContext context);

    /**
     * 获取下一级文件列表
     */
    List<BPanUserFileVO> fileList(QueryChildFileListContext context);

    /**
     * 保存分享文件
     */
    void saveFiles(ShareSaveContext context);

    /**
     * 下载分享的文件
     */
    void download(ShareFileDownloadContext context);

    /**
     * 刷新状态
     */
    void refreshShareStatus(List<Long> fileIdList);
}
